#ifndef BASECAMERA
#define BASECAMERA

#include <d3d11.h>
#include <d3dx11.h>
#include <xnamath.h>

namespace Cameras{

	class BaseCamera{
	public:
		void Setup(XMVECTOR &pos, XMVECTOR &lookat);

		virtual void Update(float dt){}

		void ResetProjection();

		XMMATRIX View(){
			return viewMatrix;
		}

		XMMATRIX Projection(){
			return projection;
		}

		XMVECTOR Position(){
			return position;
		}

	protected:
				
		XMMATRIX viewMatrix;
		XMMATRIX projection;
		XMVECTOR position;
		XMVECTOR forward;
		XMVECTOR right;
		XMVECTOR up;

		XMVECTOR initialForward;	
		XMVECTOR initialRight;

		XMMATRIX rotation;

		float totalYaw;
		float totalPitch;
		float totalRoll;
		float aspectRatio;
		XMVECTOR initialUp;
	};
}

#endif